package skeleton_wearebatman;

import java.io.BufferedReader;
import java.io.IOException;

class Switch implements Ioperable, IhasOutput {

    private String name;        // változó, az objektum nevének tárolására

    public Switch(String s) {   // konstruktor
        name = s;
        System.out.println("CALL | Switch | " + name + " | " + this.hashCode() + " | Switch()");
    }

    public void setState(boolean s) {   // ezzel a metódussal állítható az állapota
        System.out.println("CALL | Switch | " + name + " | " + this.hashCode() + " | setState(boolean s)");
    }

    public Output getOutput(int index) {    // az output csatlakoztatására
        System.out.println("RETURN | Switch | " + name + " | " + this.hashCode() + " | getOutput(int index)");
        return null;
    }

    public void operate() {     // kiadja az előzőleg beállított 0 vagy 1 értéket
        System.out.println("CALL | Switch | " + name + " | " + this.hashCode() + " | operate()");        
        BufferedReader keyboard = new BufferedReader(new java.io.InputStreamReader(System.in));
        int bit = 0;

        // Bekérjük, hogy mi a kapcsoló állása
        try {
            do {
                System.out.print("DECIDE | Choose a value for the output (0-1): ");
                bit = Integer.parseInt(keyboard.readLine());       
            } while (bit != 0 && bit != 1);
        } catch (IOException ex) {
            System.out.println("Type 0 or 1!");             // IO hiba esetén
        }
        System.out.println("RETURN | Switch | " + name + " | " + this.hashCode() + " | " + bit);
    }

    public void connectOutput(Output out) {         // outputok csatlakoztatására
        System.out.println("CALL | Switch | " + name + " | " + this.hashCode() + " | connectOutput(Output out)");
    }
}
